Intel-Partitionstabelle

From CGSecurity

Jump to: navigation, search

Wie ist die Partitionstabelle geschrieben?

CHS (Cylinder, Head, Sector)-Werte sind von einer eingestellten Anzahl von Bits für jeden Wert in der 16-Byte-Partitionstabelle begrenzt auf: 1023,254,63. Also können LBA und CHS-Werte nicht gleich für Festplatten größer als 8 GB sein.

Es gibt zwei Arten, den CHS-Wert zu speichern:

  • erste Weg
 konvertiere LBA zu CHS,
 speichere (cylinder & 0x3FF, head & 0xFF, sector & 0x3F)

Das ist was Partition Magic (Versionen fr├╝her als 8.0?) macht.

  • zweite Weg
 konvertiere LBA zu CHS
 if cylinder <= 1023,
   speichere (cylinder & 0x3FF, head & 0xFF, sector & 0x3F)
 else
   speichere (1023, max_head & 0xFF, max_sector & 0x3F)

Dies ist, was Linux-fdisk und TestDisk tun.


Wenn TestDisk die Partitionstabelle ├╝berpr├╝ft, ber├╝cksichtigt es das beide Wege richtig sein k├╢nnen. Aber der zweite Weg ist besser, weil der CHS-Anfang ist immer niedriger oder gleich zum CHS-Ende.


Beispiel: Die logische Geometrie einer Festplatte sind 255 K├╢pfe pro Zylinder und 63 Sektoren pro Kopf. Eine Partition beginnt bei LBA=46781280 oder CHS=2912,0,1. Diese Partition endet bei 3072,254,63.

  • Erste Weg:
 Start:  864,  0, 1
 Ende:      0,254,63
  • Zweite Weg:
 Start: 1023,254,63
 Ende:   1023,254,63


NB: 1023 = 0x3FF (1023*255+254)*63+63-1=16450559 (2912*255+ 0)*63+ 1-1=46781280

Partition Magic (vor Version 8,0?) betrachtet den zweiten Weg als ung├╝ltig; obwohl es ein vereinbarter Standard ist. TestDisk bearbeitet beides, ohne sich zu beschweren.

Zur├╝ck zur TestDisk Hauptseite

Data Recovery